// 引入模块（模型&加密模块）
var jwt = require("jsonwebtoken");//接口TOKEN校验模块
process.env["NODE_CONFIG_DIR"] = "./application/config/";
var jwt_config = require("config").get("jwt_config");

// 引入逻辑层模块
const path = require("path")
const managerService = require(path.join(process.cwd(), "application/services/ManagerService"));

// 登录验证逻辑
module.exports.login = function(req, res, next) {
	// 调用Service层的登录方法
	managerService.login(req.body.username, req.body.password, function(code, err, user) {
		if(err) return res.sendJson(code, err, null);
		return res.sendJson(code, '登录成功', user);
	});
};

/**
 * TOKEN验证函数 
 * @param  object   req  请求对象
 * @param  object   res  响应对象
 * @param  function next 传递事件函数
 */
module.exports.tokenAuth = function(req, res, next) {
	// 校验TOKEN
	var headerToken = req.headers.authorization ? req.headers.authorization : ''
	jwt.verify(headerToken.substr(7), jwt_config.get("secretKey"), function (err, tokenData) {
		if(err) return res.sendJson(null,400,'无效token');
		if(!tokenData) return res.sendJson(null,400,'无效token');
		// 解析TOKEN数据
		req.userInfo = {}; 
		req.userInfo.uid = tokenData["uid"];
		req.userInfo.rid = tokenData["rid"];
		// 匹配下一个路由
		next() 
	});
}